#define _GNU_SOURCE
#include <pthread.h>
#include <stdio.h>
#include <unistd.h>

// first 线程函数
void *first_thread_fun(void *arg)
{
    printf("first线程开始执行 tid = %d\n", gettid());
}
void *second_thread_fun(void *arg)
{
    printf("second线程开始执行 tid = %d\n", gettid());
}
int main(int argc, char const *argv[])
{
    printf("main线程开始执行 tid = %d\n", gettid());

    pthread_t pt1, pt2;
    // 参数二 null 默认优先级 参数三 线程函数 参数四 线程函数参数
    pthread_create(&pt1, NULL, first_thread_fun, NULL);
    pthread_create(&pt2, NULL, second_thread_fun, NULL);

    printf("main线程(%d)继续向下执行 pt1 = %ld pt2 = %ld\n", gettid(), pt1, pt2);

    //等待2个线程执行完毕
    pthread_join(pt1, NULL);
    pthread_join(pt2, NULL);

    printf("main即将结束执行tid = %d\n", gettid());
    return 0;
}
// #define _GNU_SOURCE
// #include <pthread.h>
// #include <stdio.h>
// #include <unistd.h>

// // 线程函数
// void *first_thread_fun(void *)
// {
//     printf("first pid : %d", gettid());
// }
// void *second_thread_fun(void *)
// {
//     printf("second pid : %d", gettid());
// }
// int main(int argc, char const *argv[])
// {
//     printf("main pid : %d", gettid());
//     pthread_t pt1, pt2;
//     pthread_create(&pt1, NULL, first_thread_fun,NULL);
//     pthread_create(&pt2, NULL, second_thread_fun,NULL);

//     pthread_join(pt1,NULL);
//     pthread_join(pt2,NULL);
//     printf("main即将结束执行tid = %d\n", gettid());

//     return 0;
// }
